package stream源码分析.ﬁlter.PredicateTest;

import java.util.function.Predicate;

/**
 * Java 8中引入了Predicate功能接口。
 *
 * Java Predicate表示一个参数的谓词。
 *
 * Predicate是一个布尔值的函数。
 *
 * Java Predicate是一个功能接口，属于java.util.function包。
 *
 * Predicate的功能方法是test(T t)。
 *
 * Predicate的其他方法是test、isEqual、and、or、negate和not。
 *
 * not方法在Java 11中被引入。
 *
 * 在本文章，我们将提供Predicate的例子及其所有方法。
 * */
public class PredicateTestDemo1 {
    /**
     * test是Predicate的功能方法。它在给定的参数上评估这个谓词。
     * @param args
     */
    public static void main(String[] args) {
        // Is username valid
        Predicate<String> isUserNameValid = u -> u != null && u.length() > 5 && u.length() < 10;
        System.out.println(isUserNameValid.test("Mahesh")); //true

        // Is password valid
        Predicate<String> isPasswordValid = p -> p != null && p.length() > 8 && p.length() < 15;
        System.out.println(isPasswordValid.test("Mahesh123")); //true

        // Word match
        Predicate<String> isWordMatched = s -> s.startsWith("Mr.");
        System.out.println(isWordMatched.test("Mr. Mahesh")); //true

        //Odd numbers
        Predicate<Integer> isEven = n -> n % 2 == 0;
        for(int i = 0 ; i < 5 ; i++) {
            System.out.println("Is "+ i + " even: " + isEven.test(i));
        }
    }
}
